package org.liquidByte.trafficMustang.androidApp.listview.row;

import java.security.InvalidParameterException;

import org.liquidByte.trafficMustang.R;
import org.liquidByte.trafficMustang.androidApp.Bindings;
import org.liquidByte.trafficMustang.androidApp.listview.adapter.RowAdapter;
import org.liquidByte.trafficMustang.androidApp.services.dto.DeslocamentoDTO;
import org.liquidByte.trafficMustang.androidApp.services.dto.UsuarioDTO;
import org.liquidByte.trafficMustang.androidApp.services.dto.VeiculoDTO;

import android.view.View;
import android.widget.TextView;

public class SolicitarDeslocamentoRow extends ModelListViewRow<DeslocamentoDTO> {
	
	private TextView txvMotorista;
	private TextView txvReputacao;
	private TextView txvTaxa;
	private TextView txvVeiculo;

	public SolicitarDeslocamentoRow(RowAdapter<DeslocamentoDTO> parentAdapter, View view) {
		super(parentAdapter, view);
		if (view.getId() != R.layout.listview_row_solicitar_deslocamento) {
			throw new InvalidParameterException("view is not a type of listview_row_solicitar_deslocamento");
		}
	}
	
	public TextView getTxvMotorista() {
		if (this.txvMotorista == null) {
			this.txvMotorista = this.findViewById(TextView.class, R.id.row_solicitar_deslocamento_txvMotorista);
		}
		return txvMotorista;
	}
	public TextView getTxvReputacao() {
		if (this.txvReputacao == null) {
			this.txvReputacao = this.findViewById(TextView.class, R.id.row_solicitar_deslocamento_txvReputacao);
		}
		return txvReputacao;
	}
	public TextView getTxvTaxa() {
		if (this.txvTaxa == null) {
			this.txvTaxa = this.findViewById(TextView.class, R.id.row_solicitar_deslocamento_txvTaxa);
		}
		return txvTaxa;
	}
	public TextView getTxvVeiculo() {
		if (this.txvVeiculo == null) {
			this.txvVeiculo = this.findViewById(TextView.class, R.id.row_solicitar_deslocamento_txvVeiculo);
		}
		return txvVeiculo;
	}

	@Override
	public void bindToView() {
		DeslocamentoDTO deslocamento = this.getModel();
		if (deslocamento == null) {
			this.getTxvMotorista().setText(null);
			this.getTxvReputacao().setText(null);
			this.getTxvTaxa().setText(null);
			this.getTxvVeiculo().setText(null);
		} else {
			Bindings.currencySet(this.getTxvTaxa(), deslocamento.getTaxa());
			UsuarioDTO mot = deslocamento.getMotorista();
			VeiculoDTO veiculo = deslocamento.getVeiculo();
			
			if (mot == null) {
				this.getTxvMotorista().setText(null);
				this.getTxvReputacao().setText(null);
			} else {
				this.getTxvMotorista().setText(mot.getNome());
				Bindings.percentSet(this.getTxvReputacao(), mot.getReputacao());
			}
			
			if (veiculo == null) {
				this.getTxvVeiculo().setText(null);
			} else {
				String format = "%s (%s)";
				this.getTxvVeiculo().setText(String.format(format, veiculo.getModelo(), veiculo.getPlaca()));
			}
		}
	}
	
	@Override
	public void init() {

	}
}
